前言
前兩天分別學習了 Linux 的根目錄 / 與 Absolute Path(絕對路徑)的概念。
今天的 Challenge 開始接觸另一個重要觀念 目前工作目錄(Current Working Directory)。
透過這次的 Position thy self 挑戰,我第一次實際使用 cd 指令切換目錄,並理解 Linux 為什麼會在意「目前所在的位置」。
在 Linux 中,每個程式執行時都會有一個目前所在的位置。
這個位置稱為 Current Working Directory(目前工作目錄)
可以把它理解成目前終端機正在工作的資料夾。
例如輸入pwd
顯示 /home/hacker
代表目前所在的位置是 /home/hacker
cd 是 Change Directory 也就是切換目錄的意思。
例如 cd /tmp
代表切換到 /tmp 目錄。
再使用 pwd 確認目前位置。
如果看到 /tmp 就表示切換成功。
這次 Challenge 一開始直接執行 /challenge/run
結果出現錯誤訊息Incorrect... You are not currently in the /usr/share/build-essential directory. Please use the cd utility to change directory appropriately.
從訊息可以得知,題目要求必須在 /usr/share/build-essential 目錄中執行程式。
因此先切換致目錄 /usr/share/build-essential
接著輸入pwd確認目前位置
結果顯示與題目要求路徑一致
再次執行 /challenge/run
成功取得 Flag。
一開始可能會以為只要執行/challenge/run就能完成挑戰。
但這一關會讓你發現 Linux 不只在乎執行哪個程式,還會在乎目前是從哪個目錄執行這個程式。
因此即使使用了正確的程式路徑 /challenge/run
如果目前工作目錄不符合要求,程式仍然可能拒絕執行。
今天的 Challenge 雖然不難,但可以開始理解 Linux 中「位置」的重要性。
之前只知道路徑可以用來找到程式,今天則學到程式有時候還會要求從特定目錄執行。
透過 cd 與 pwd 的搭配使用,也讓人對目前工作目錄的概念有更清楚的理解。
我發現很多 Linux 指令看起來很簡單,但背後其實都和檔案系統的運作方式有關。
這些基礎概念雖然不像 Pwn 題目那麼刺激,但應該都是後續學習的重要基礎。